package ar.com.age.distribuidora.dominio;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@Table(name = "FacturaCompra")
public class FacturaCompra {
	@Id
	@Column(name = "FacturaCompra_id")
	@SequenceGenerator(name = "seq_FacturaCompra", sequenceName = "seq_FacturaCompra", allocationSize = 1)
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_FacturaCompra")
	private Long id;

	@Column(name = "comentario")
	private String comentario;

	@Column(name = "estado")
	private String estado;

	@Column(name = "fecha")
	@Temporal(TemporalType.DATE)
	private Date fecha;

	@Column(name = "codigo")
	private String codigo;
	
	@Column(name = "tipo")
	private String tipo;
	
	@Column(name = "total")
	private Double total;
	
	@ManyToOne
	@JoinColumn(name="fk_proveedor_id")
	private Proveedor proveedor;
	
	@OneToMany
	private List<Pago> pagos;
	
	@OneToMany
	private List<LoteDeCompra> lotesDeComra;
	
	/*@OneToOne
	private Empleado empleadoDeCompra;*/
	@Column(name = "empleadoDeCompra")
	private String empleadoDeCompra;

	public FacturaCompra(){
		
		this.lotesDeComra =  new ArrayList<LoteDeCompra>();
		this.pagos =  new ArrayList<Pago>();
	}
	
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getComentario() {
		return comentario;
	}

	public void setComentario(String comentario) {
		this.comentario = comentario;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	public String getCodigo() {
		return codigo;
	}

	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	public String getTipo() {
		return tipo;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	public Double getTotal() {
		return total;
	}

	public void setTotal(Double total) {
		this.total = total;
	}

	public Proveedor getProveedor() {
		return proveedor;
	}

	public void setProveedor(Proveedor proveedor) {
		this.proveedor = proveedor;
	}

	public List<Pago> getPagos() {
		return pagos;
	}

	public void setPagos(List<Pago> pagos) {
		this.pagos = pagos;
	}

	public List<LoteDeCompra> getLotesDeComra() {
		return lotesDeComra;
	}

	public void setLotesDeComra(List<LoteDeCompra> loteDeComra) {
		this.lotesDeComra = loteDeComra;
	}

	/*public Empleado getEmpleadoDeCompra() {
		return empleadoDeCompra;
	}

	public void setEmpleadoDeCompra(Empleado empleadoDeCompra) {
		this.empleadoDeCompra = empleadoDeCompra;
	}*/
	
	public void agregarLoteDeCompra(LoteDeCompra lote){
		
		this.lotesDeComra.add(lote);
	}
	
	public String getEmpleadoDeCompra() {
		return empleadoDeCompra;
	}

	public void setEmpleadoDeCompra(String empleadoDeCompra) {
		this.empleadoDeCompra = empleadoDeCompra;
	}

	public void agregarPago(Pago pago){
		
		this.pagos.add(pago);
	}
	
}
